<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

  <head>
    <title>aPLib - Version History</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href="ahob.css" title="A Hint of Blue" rel="stylesheet" type="text/css" />
  </head>

  <body>

    <table class="ismain">
      <tr>
        <td class="isdesc">

<div class="topnav">
 <a href="acknowledgements.html">&lt;&lt;&nbsp;prev</a> |
 <a href="index.html">home</a> |
 <span class="disabled">next&nbsp;&gt;&gt;</span>
</div>

<div class="title">Version History</div>

<dl class="changes">
 <dt>v1.1.0 *</dt>
 <dd>
  <p>Added Linux ELF shared library support, thanks to Vov Pov.</p>
  <p>Added a Python example, thx to Marco Fabbricatore.</p>
  <p>Fixed a bug in 64-bit <code>aPsafe_check()</code>.</p>
  <p>Cleaned up compression code.</p>
  <p>Changed to semver version numbering.</p>
 </dd>
 <dt>v1.01 *</dt>
 <dd>
  <p>Added undecorated names to 32-bit dll again, thanks to James C. Fuller.</p>
 </dd>
 <dt>v1.00 *</dt>
 <dd>
  <p>Changed the license so aPLib can now be used free of charge for
  commercial use as well.</p>
  <p>Added support for 64-bit compression and decompression. Since I do not
  have a running 64-bit system myself, any feedback on how it works would be
  great.</p>
  <p>Removed support for a number of old compilers/assemblers. If you
  still need these, please use the previous release or contact me (if you
  need object files for Delphi, simply unpack the OMF library).</p>
  <p>Moved most of the examples to the contrib folder since I no longer
  have the old development tools installed to check they work.</p>
  <p>All the assembly source files included are now FASM syntax.</p>
  <p>Simplified the build process using objconv by Agner Fog.</p>
  <p>Jumped the version number to v1.00 to signify the code is stable.</p>
 </dd>
 <dt>v0.44 *</dt>
 <dd>
  <p>Made a few updates to the documentation.</p>
  <p>Fixed a rare crash, thx to Rafael Ahucha!</p>
 </dd>
 <dt>v0.43 *</dt>
 <dd>
  <p>Added Visual Basic 6 wrapper, thx to Jon Johnson!</p>
  <p>Added PowerBuilder 9.0 objects, thx to James Sheekey!</p>
  <p>Fixed a rare crash, thx to cyberbob!</p>
 </dd>
 <dt>v0.42 *</dt>
 <dd>
  <p>Added C and assembler implementations of a new safe depacker
  (<a href="decompression.html#aP_depack_safe">aP_depack_safe</a> and
  <a href="decompression.html#aP_depack_asm_safe">aP_depack_asm_safe</a>).</p>
  <p>Updated the <code>aPsafe_</code> wrapper functions.</p>
  <p>Renamed <code>lib/vc</code> to <code>lib/mscoff</code> and
  <code>lib/watcom</code> to <code>lib/omf</code> to better reflect that
  they are not limited to those specific compilers.</p>
  <p>Updated examples and documentation.</p>
 </dd>
 <dt>v0.41</dt>
 <dd>
  <p>Added a <a href="http://www.borland.com/">Borland C++ Builder</a>
  example, thx to mouser!</p>
  <p>Fixed vc library compatibility with
  <a href="http://www.smorgasbordet.com/pellesc/">Pelles C</a>.</p>
 </dd>
 <dt>v0.40</dt>
 <dd>
  <p>The documentation was rewritten in html, and moved to a separate
  folder.</p>
  <p>All examples were updated. The <code>dll_asm</code>, <code>dos32</code>
  and <code>tlink32</code> examples were removed, and a small .NET example
  was added.</p>
 </dd>
 <dt>v0.39</dt>
 <dd>
  <p>All aPLib functions now return <code>-1</code> on error instead of
  <code>0</code>. Added a macro <code>APLIB_ERROR</code> for this value to
  all include files.</p>
 </dd>
 <dt>v0.38</dt>
 <dd>
  <p>The aPLib compression functions should now be fully thread-safe.</p>
  <p>Updated the C decompression code for thread-safety.</p>
 </dd>
 <dt>v0.37</dt>
 <dd>
  <p>Changed the parameters for the callback function. It is now called
  with the input size, input bytes processed, output bytes produced,
  and a user-supplied callback parameter. Thx to f0dder!</p>
 </dd>
 <dt>v0.36 *</dt>
 <dd>
  <p>Fixed a bug which could cause a match to be found in the area
  before the input buffer under certain conditions, thx to Veit!</p>
  <p>Changed the extension of the C example files from <tt>cpp</tt> to
  <tt>c</tt>.</p>
  <p>The ELF32 version was tested under FreeBSD, thx to Oleg!</p>
 </dd>
 <dt>v0.35</dt>
 <dd>
  <p>Worked with a number of 'issues' in the build process.</p>

  <p>Fixed the C depacker so it no longer modifies the input buffer,
  thx to Trevor Mensah!</p>
 </dd>
 <dt>v0.34 *</dt>
 <dd>
  <p>Updated the 16bit, Ada, Delphi, C/C++, TMT Pascal and Virtual
  Pascal examples, thx to METALBRAIN, Gautier, Oleg and Veit!</p>

  <p>Added a MASM32 example program, thx to Steve Hutchesson!</p>

  <p>Fixed another bug which could cause aP_pack to read one byte
  past the input buffer, thx to Reiner Proels!</p>

  <p>NOTE!! the dll version now expects the callback function to
  use the stdcall calling convention.</p>

  <p>The libraries now include the function aP_max_packed_size,
  which given the input size returns the maximum possible size
  aP_pack may produce (i.e. the worst case output size of totally
  incompressible data). At the moment the function simply returns
  <code>(inputsize + (inputsize / 8) + 64)</code>.</p>
 </dd>
 <dt>v0.33</dt>
 <dd>
  <p>Added ELF32 version of aPLib, which has been tested with Linux,
  BeOS and QNX. Modified the C example to work under these
  operating systems too.</p>
 </dd>
 <dt>v0.32</dt>
 <dd>
  <p>Discovered some mixups between different versions of the
  examples .. started rewriting some of them. Added a header
  to the files created by most of the examples.</p>
 </dd>
 <dt>v0.31</dt>
 <dd><p>Improved compression ratio a little.</p></dd>
 <dt>v0.30</dt>
 <dd>
  <p>Fixed a bug in one of the 16bit depackers, thx to Peter Hegel!
  Updated the C/C++ example.</p>
 </dd>
 <dt>v0.29</dt>
 <dd>
  <p>Updated the Ada example, thx to Gautier! I have removed the 'b'
  from the version number.</p>
 </dd>
 <dt>v0.28b</dt>
 <dd>
  <p>Updated the 16bit depacker examples, thx to METALBRAIN!
  Renamed the SRC/C depacker files.</p>
 </dd>
 <dt>v0.27b</dt>
 <dd>
  <p>Fixed a bug which could cause aP_pack to read one byte past
  the input buffer.</p>
 </dd>
 <dt>v0.26b *</dt>
 <dd>
  <p>Added Visual C++ and Borland C examples.</p>

  <p>Rewrote the example program, so there is only a single source file,
  which works with BCC32, DJGPP, VC++ and Watcom.</p>

  <p>Added an import library for Visual C++ in <tt>lib/dll</tt>, and
  an example of how to use it (<tt>examples/c/make_dll.bat</tt>).</p>

  <p>The libraries now include the function aP_workmem_size,
  which given the input size returns the amount of memory
  required for the work buffer (you still have to allocate
  it yourself). This should make upgrading easier in case
  I change the memory requirement in a later version. At
  the moment the function simply returns 640k.</p>
 </dd>
 <dt>v0.25b</dt>
 <dd>
  <p>Added a TMT Pascal example, thx to Oleg Prokhorov!</p>
  <p>Moved the Ada and VPascal examples to the example dir.</p>
  <p>Updated the documentation.</p>
 </dd>
 <dt>v0.24b</dt>
 <dd>
  <p>Updated the 16bit depacker examples, thx to METALBRAIN!</p>
  <p>Made all assembler depackers smaller, thx to TAD and METALBRAIN!</p>
 </dd>
 <dt>v0.23b</dt>
 <dd>
  <p>Recompiled with the latest VC++ and DJGPP versions.</p>
  <p>Did a few speed optimisations -- most versions should be a
  little faster.</p>
 </dd>
 <dt>v0.22b *</dt>
 <dd>
  <p>Improved the compression speed a little more.</p>
  <p>Cleaned up the code, which made the library somewhat smaller.</p>
  <p>Added a C depacker.</p>

  <p>Silent update: Updated the 16bit depackers - thx to
  METALBRAIN. There is still one problem with the 16bit
  example depackers, but it will be fixed for the next
  release.</p>
 </dd>
 <dt>v0.21b</dt>
 <dd>
  <p>Improved compression ratio and speed.</p>
  <p>Added Ada support by Gautier - thx!</p>
  <p>Reduced the memory requirement from 1mb to 640k -- which should
  be enough for anybody ;).</p>
 </dd>
 <dt>v0.20b *</dt>
 <dd>
  <p>Added Delphi support and example by Alexey Solodovnikov - thx!</p>
  <p>Rewrote the aPPack example, removing some errors, and
  added 16bit depackers - thx to METALBRAIN!</p>
  <p>Removed a lot of unneeded information from the object files.</p>

  <p>Rearranged all the folders -- hope it's not too
  confusing ;). Removed all the example binaries from this
  file, and made them available in a separate file instead.</p>

  <p>Added the real aPACK / aPLib homepage URL, since home.ml.org
  was down for a period.</p>
 </dd>
 <dt>v0.19b *</dt>
 <dd>
  <p>Fixed a little mem bug (hopefully), thx to ANAKiN!</p>
  <p>Ratio improved a little on large files.</p>
  <p>Finally got around to updating my DJGPP installation :)</p>

  <p>NOTE!! I have revised the license conditions -- please
  read APLIB.DOC.</p>
 </dd>
 <dt>v0.18b *</dt>
 <dd>
  <p>Added the new VPascal interfacing code by Veit Kannegieser.</p>
  <p>Added a library compiled for VC.</p>
  <p>Worked a little on the depackers.</p>
 </dd>
 <dt>v0.17b *</dt>
 <dd>
  <p>NOTE!! the callback function now has to return a value.
  This is to make it possible for the callback function to
  abort the packing without exiting the program. If the
  callback returns 1, aP_pack will continue -- if it returns
  0, aP_pack will stop and return 0.</p>

  <p>The aPACK / aPLib homepage is now up on: http://apack.home.ml.org/</p>

  <p>I have not gotten the new VPascal interfacing code from
  Veit yet, so I will add it again in the next version :)</p>

  <p>Since I have added so much new stuff, I am releasing this
  version to get some feedback (hint!), to find out where
  to go from here. If you have Visual C++, Borland C++,
  Borland C++ Builder, Visual Basic, Delphi or other 32-bit
  compilers/linkers, I am very interested in any problems
  you might have using aPLib (especially the DLL version).</p>
 </dd>
 <dt>v0.16b</dt>
 <dd>
  <p>NOTE!! aP_pack NO LONGER allocates the memory it needs
  itself. This was changed because otherwise you would
  need to supply malloc and free functions to the packer.
  Now you just call aP_pack with a pointer to 1mb of mem.
  This is also faster if you compress multiple sets of data,
  because mem is not allocated and deallocated every time.</p>

  <p>Added new VPascal interfacing code by Veit Kannegieser - thx!</p>
  <p>Added DOS32 and TLINK32 (Win32 PE) example code and executables.</p>
  <p>Also added a DLL version of aPLib, and some
  example code for it. By the way -- the DLL version works fine as a wdl
  file for WDOSX!</p>
  <p>Speeded up the fast depackers a tiny bit.</p>
 </dd>
 <dt>v0.15b</dt>
 <dd>
  <p>Quite a few people have pointed out to me that AR was not
  the cleverest library format to use, so I changed to OMF
  format, which works with (at least) Watcom, DOS32 and
  TASM32/TLINK32.</p>
  <p>Added assembler depackers for TASM and WASM, and added the fast
  assembler depacker for NASM.</p>
  <p>The Watcom and DJGPP libraries now also contain compiled
  versions of aP_depack_asm and aP_depack_asm_fast, and the
  APDEPACK.H files with the inline assembler versions have
  been removed.</p>
 </dd>
 <dt>v0.14b *</dt>
 <dd>
  <p>Made some minor enhancements to the packer - ratio is a
  little better.</p>
  <p>Added depacking code for NASM, converted by Archee/CoNTRACT - thx!</p>
 </dd>
 <dt>v0.13b</dt>
 <dd>
  <p>Added depacking code for Pascal (Virtual Pascal), converted
  by Veit Kannegieser - thx!</p>
  <p>Switched to AR format for the Watcom library.</p>
 </dd>
 <dt>v0.12b *</dt>
 <dd><p>Changed the libraries to make them C-compatible.</p></dd>
 <dt>v0.11b</dt>
 <dd><p>aP_depack_asm_fast is a little faster.</p></dd>
 <dt>v0.10b *</dt>
 <dd><p>Compression is a little faster :)</p></dd>
 <dt>v0.09b</dt>
 <dd><p>Compression is a little better :)</p></dd>
 <dt>v0.08b *</dt>
 <dd><p>First release version of aPLib :)</p></dd>
 <dt>v0.07b</dt>
 <dd>
  <p>Fixed a bug that gave errors when compressing multiple sets of
  data (thx x-otic!). Cleaned up the code a little.</p>
 </dd>
 <dt>v0.06b</dt>
 <dd>
  <p>Changed the packer, so it uses a fixed amount of mem (about 1 meg).
  A few bugs fixed.</p>
 </dd>
 <dt>v0.05b</dt>
 <dd><p>First version of the aPLib library included.</p></dd>
 <dt>v0.04b</dt>
 <dd><p>Added the DJGPP fast asm unpacker.</p></dd>
 <dt>v0.03b</dt>
 <dd><p>Optimised the depacker a little.</p></dd>
 <dt>v0.02b</dt>
 <dd><p>Second try ;-P</p></dd>
 <dt>v0.01b</dt>
 <dd><p>First try!</p></dd>
</dl>

<p>Project started March 5th 1998.</p>

&nbsp;<br />

<div class="botnav">
 <a href="acknowledgements.html">&lt;&lt;&nbsp;prev</a> |
 <a href="index.html">home</a> |
 <span class="disabled">next&nbsp;&gt;&gt;</span>
</div>

        </td>
      </tr>
    </table>

  </body>

</html>
